# -*- coding:utf-8 -*-
# @File       :   科科爱吃香蕉.py
# @Author     :   LINING
# @Time       :   2024/3/13 17:25
# @Description :
"""
https://leetcode.cn/problems/koko-eating-bananas/description/
珂珂喜欢吃香蕉。这里有 n 堆香蕉，第 i 堆中有 piles[i] 根香蕉。警卫已经离开了，将在 h 小时后回来。

珂珂可以决定她吃香蕉的速度 k （单位：根/小时）。每个小时，她将会选择一堆香蕉，从中吃掉 k 根。如果这堆香蕉少于 k 根，她将吃掉这堆的所有香蕉，然后这一小时内不会再吃更多的香蕉。

珂珂喜欢慢慢吃，但仍然想在警卫回来前吃掉所有的香蕉。

返回她可以在 h 小时内吃掉所有香蕉的最小速度 k（k 为整数）。



示例 1：

输入：piles = [3,6,7,11], h = 8
输出：4

3 4 2 4 3 4 4 3
解题： 每小时吃n根，几小时吃完
"""
# piles = [3,6,7,11]
# h = 8
piles = [30,11,23,4,20]
h = 5


def get_hours(piles_list, bana):
    """
    piles_list：香蕉数组
    bana: 每小时吃的根数
    """
    hour = 0
    for i in piles_list:
        if i <= bana:
            hour = hour+1
        else:
            hour = hour+int(i/bana)+1
    return hour


def get_min_speed(piles_list, hour):
    left = 1
    right = max(piles_list)
    while left < right:
        mid = int((left+right)/2)
        if get_hours(piles_list, mid) <= hour:
            right = mid
        else:
            left = mid+1
    return right


print(get_min_speed(piles, h))



